class CustomConfigObject:
    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)
    
    def __setattr__(self, name, value):
        self.__dict__[name] = value
    
    def __getattr__(self, name):
        return self.__dict__.get(name)
    
    def __str__(self):
        return str(self.__dict__)
    
    def __repr__(self):
        return self.__str__()

    def to_dict(self):
        return {k: v for k, v in self.__dict__.items() if not k.startswith('_')}

    def __iter__(self):
        return iter(self.to_dict().items())

    def items(self):
        return self.to_dict().items()
    
    def keys(self):
        return self.to_dict().keys()
    
    def values(self):
        return self.to_dict().values()
    
    def update(self, **kwargs):
        self.__dict__.update(kwargs)
